// 购物车页面
Page({
  data: {
    // 购物车商品列表
    cartList: [],
    
    // 选中的商品ID数组
    checkedGoods: [],
    
    // 是否全选
    checkedAll: false,
    
    // 选中商品的总价
    totalPrice: 0,
    
    // 选中商品的数量
    checkedGoodsCount: 0,
    
    // 当前选中的tabbar项
    activeTab: 1
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 检查是否有购物车数据，如果没有则添加假数据
    const cartList = wx.getStorageSync('cartList') || [];
    if (cartList.length === 0) {
      const mockData = [
        {
          id: '1001',
          name: '纯棉T恤',
          price: 59.9,
          num: 2,
          imageUrl: '/images/goods.jpg',
          spec: '白色/L'
        },
        {
          id: '1002',
          name: '牛仔裤',
          price: 129.9,
          num: 1,
          imageUrl: '/images/goods.jpg',
          spec: '蓝色/32'
        },
        {
          id: '1003',
          name: '运动鞋',
          price: 199.0,
          num: 1,
          imageUrl: '/images/goods.jpg',
          spec: '黑色/42'
        }
      ];
      wx.setStorageSync('cartList', mockData);
    }
    this.getCartData();
  },

  /**
   * 获取购物车数据
   */
  getCartData: function () {
    // 从本地存储获取购物车数据
    const cartList = wx.getStorageSync('cartList') || [];
    
    // 获取之前选中的商品ID
    const checkedGoods = this.data.checkedGoods.filter(id => 
      cartList.some(item => item.id === id)
    );
    
    this.setData({
      cartList,
      checkedGoods
    });
    
    // 更新全选状态和总价
    this.updateCheckedAll();
    this.calculateTotal();
  },

  /**
   * 更新全选状态
   */
  updateCheckedAll: function () {
    const { cartList, checkedGoods } = this.data;
    
    // 如果购物车为空，则不全选
    if (cartList.length === 0) {
      this.setData({
        checkedAll: false
      });
      return;
    }
    
    // 如果选中的商品数量等于购物车商品数量，则全选
    this.setData({
      checkedAll: checkedGoods.length === cartList.length
    });
  },

  /**
   * 计算选中商品的总价和数量
   */
  calculateTotal: function () {
    const { cartList, checkedGoods } = this.data;
    
    // 计算选中商品的总价和数量
    let totalPrice = 0;
    let checkedGoodsCount = 0;
    
    cartList.forEach(item => {
      if (checkedGoods.includes(item.id)) {
        totalPrice += item.price * item.num;
        checkedGoodsCount += item.num;
      }
    });
    
    this.setData({
      totalPrice: parseFloat(totalPrice.toFixed(2)),
      checkedGoodsCount
    });
  },

  /**
   * 选择/取消选择商品
   */
  onCheckboxChange: function (event) {
    const checkedGoods = event.detail;
    
    this.setData({
      checkedGoods
    });
    
    // 更新全选状态和总价
    this.updateCheckedAll();
    this.calculateTotal();
  },

  /**
   * 全选/取消全选
   */
  onCheckAll: function (event) {
    const checked = event.detail;
    const { cartList } = this.data;
    
    let checkedGoods = [];
    
    if (checked) {
      // 全选
      checkedGoods = cartList.map(item => item.id);
    }
    
    this.setData({
      checkedAll: checked,
      checkedGoods
    });
    
    // 更新总价
    this.calculateTotal();
  },

  /**
   * 修改商品数量
   */
  onStepperChange: function (event) {
    const num = event.detail;
    const id = event.currentTarget.dataset.id;
    const { cartList } = this.data;
    
    // 更新购物车中商品的数量
    const updatedCartList = cartList.map(item => {
      if (item.id === id) {
        return {
          ...item,
          num
        };
      }
      return item;
    });
    
    this.setData({
      cartList: updatedCartList
    });
    
    // 保存到本地存储
    wx.setStorageSync('cartList', updatedCartList);
    
    // 更新总价
    this.calculateTotal();
  },

  /**
   * 删除商品
   */
  onDeleteItem: function (event) {
    const id = event.currentTarget.dataset.id;
    const { cartList, checkedGoods } = this.data;
    
    // 从购物车中删除商品
    const updatedCartList = cartList.filter(item => item.id !== id);
    
    // 从选中商品中删除
    const updatedCheckedGoods = checkedGoods.filter(itemId => itemId !== id);
    
    this.setData({
      cartList: updatedCartList,
      checkedGoods: updatedCheckedGoods
    });
    
    // 保存到本地存储
    wx.setStorageSync('cartList', updatedCartList);
    
    // 更新全选状态和总价
    this.updateCheckedAll();
    this.calculateTotal();
    
    // 更新tabBar购物车数量
    this.updateCartBadge();
    
    wx.showToast({
      title: '删除成功',
      icon: 'success'
    });
  },

  /**
   * 清空购物车
   */
  clearCart: function () {
    wx.showModal({
      title: '提示',
      content: '确定要清空购物车吗？',
      success: (res) => {
        if (res.confirm) {
          // 清空购物车
          this.setData({
            cartList: [],
            checkedGoods: [],
            checkedAll: false,
            totalPrice: 0,
            checkedGoodsCount: 0
          });
          
          // 清空本地存储
          wx.setStorageSync('cartList', []);
          
          // 更新tabBar购物车数量
          this.updateCartBadge();
          
          wx.showToast({
            title: '购物车已清空',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 结算
   */
  onSubmit: function () {
    const { checkedGoods, cartList, totalPrice, checkedGoodsCount } = this.data;
    
    if (checkedGoodsCount === 0) {
      wx.showToast({
        title: '请选择商品',
        icon: 'none'
      });
      return;
    }
    
    // 获取选中的商品
    const checkedItems = cartList.filter(item => checkedGoods.includes(item.id));
    
    // 将选中的商品ID保存到本地存储，以便结算页面使用
    wx.setStorageSync('checkedGoods', checkedGoods);
    
    // 跳转到结算页面
    wx.navigateTo({
      url: '/pages/checkout/index'
    });
    
    console.log('结算商品:', checkedItems);
    console.log('总价:', totalPrice);
    console.log('总数量:', checkedGoodsCount);
  },

  /**
   * 跳转到商品详情页
   */
  onGoodsClick: function (event) {
    const id = event.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/product/detail/index?id=${id}`
    });
  },

  /**
   * 跳转到首页
   */
  goShopping: function () {
    wx.switchTab({
      url: '/pages/index/index'
    });
  },

  /**
   * 更新tabBar购物车数量
   */
  updateCartBadge: function () {
    const cartList = wx.getStorageSync('cartList') || [];
    const count = cartList.reduce((total, item) => total + item.num, 0);
    
    if (count > 0) {
      wx.setTabBarBadge({
        index: 1, // 购物车图标的索引，根据实际情况调整
        text: count.toString()
      }).catch(err => {
        console.log('设置TabBarBadge失败', err);
      });
    } else {
      wx.removeTabBarBadge({
        index: 1 // 购物车图标的索引，根据实际情况调整
      }).catch(err => {
        console.log('移除TabBarBadge失败', err);
      });
    }
  },
  
  /**
   * 处理自定义标签页切换事件
   */
  onCustomTabChange: function(event) {
    const { index } = event.detail;
    // 更新当前选中的标签页
    this.setData({ activeTab: index });
    // 导航逻辑已经在组件中处理
  },
  
  /**
   * 返回上一页或首页
   */
  goBack: function() {
    // 获取当前页面栈
    const pages = getCurrentPages();
    
    // 如果页面栈长度大于1，说明有上一页可以返回
    if (pages.length > 1) {
      // 正常返回上一页
      wx.navigateBack({
        delta: 1
      });
    } else {
      // 没有上一页则跳转到首页，并更新底部导航状态
      wx.switchTab({
        url: '/pages/index/index',
        success: () => {
          // 延迟一下更新tabbar状态，确保页面已经切换完成
          setTimeout(() => {
            // 更新当前选中的标签页为首页(索引0)
            this.setData({ activeTab: 0 });
            
            // 获取自定义tabbar组件实例并更新其状态
            const tabbarComponent = this.selectComponent('#custom-tabbar');
            if (tabbarComponent) {
              tabbarComponent.setData({ active: 0 });
            }
            
            // 获取当前页面实例（此时应该是首页）
            const currentPages = getCurrentPages();
            if (currentPages && currentPages.length > 0) {
              const indexPage = currentPages[currentPages.length - 1];
              // 如果首页有更新tabbar的方法，调用它
              if (indexPage && typeof indexPage.updateTabBar === 'function') {
                indexPage.updateTabBar(0);
              }
            }
          }, 100);
        }
      });
    }
  }
});